﻿using System;
using System.Collections.Generic;

namespace NovoDataBase
{
    public class CustomerRegList
    {
        private List<byte[]> regAddrList = new List<byte[]> { };
        private List<string> regGroupName = new List<string> { };
        private List<byte[]> regDataList = new List<byte[]> { };

        public CustomerRegList()
        {
            regAddrList.Clear();
            regGroupName.Clear();
            regDataList.Clear();

            regAddrList.Add(Normal);
            regDataList.Add(NormalData);
            regGroupName.Add("Normal Registers");

            regAddrList.Add(Biquads);
            regDataList.Add(BiquadsData);
            regGroupName.Add("Biquads");

            regAddrList.Add(DRC1);
            regDataList.Add(DRC1Data);
            regGroupName.Add("DRC1");

            regAddrList.Add(DRC2);
            regDataList.Add(DRC2Data);
            regGroupName.Add("DRC2");

            regAddrList.Add(DRCs);
            regDataList.Add(DRCsData);
            regGroupName.Add("DRCs");

            regAddrList.Add(CH1OutputMixer);
            regDataList.Add(CH1OutputMixerData);
            regGroupName.Add("CH1OutputMixer");

            regAddrList.Add(CH2OutputMixer);
            regDataList.Add(CH2OutputMixerData);
            regGroupName.Add("CH2OutputMixer");

            regAddrList.Add(CH1InputMixer);
            regDataList.Add(CH1InputMixerData);
            regGroupName.Add("CH1InputMixer");

            regAddrList.Add(CH2InputMixer);
            regDataList.Add(CH2InputMixerData);
            regGroupName.Add("CH2InputMixer");

            regAddrList.Add(CH3InputMixer);
            regDataList.Add(CH3InputMixerData);
            regGroupName.Add("CH3InputMixer");

            regAddrList.Add(PostScale);
            regDataList.Add(PostScaleData);
            regGroupName.Add("PostScale");

            regAddrList.Add(PreScale);
            regDataList.Add(PreScaleData);
            regGroupName.Add("PreScale");

            regAddrList.Add(SubOutputMixer);
            regDataList.Add(SubOutputMixerData);
            regGroupName.Add("SubOutputMixer");

            regAddrList.Add(SubInputMixer);
            regDataList.Add(SubInputMixerData);
            regGroupName.Add("SubInputMixer");

            regAddrList.Add(NoiseGate1);
            regDataList.Add(NoiseGate1Data);
            regGroupName.Add("NoiseGate1");

            regAddrList.Add(NoiseGate2);
            regDataList.Add(NoiseGate2Data);
            regGroupName.Add("NoiseGate2");
        }

        public List<byte[]> RegAddrList
        {
            get { return this.regAddrList; }
        }

        public List<String> RegGroupName
        {
            get { return this.regGroupName; }
        }

        public List<byte[]> RegDataList
        {
            get { return this.regDataList; }
        }

        private byte[] Normal = new byte[] {0x00, 0x02, 0x05, 0x03, 0x04, 0x06, 0x07,
            0x08, 0x09, 0x0A, 0x0B, 0x0C,  0x0E, 0x10, 0x11, 0x12, 0x13,
            0x14, 0x19, 0x1A, 0x1B, 0x1C,  0x1D, 0x1E, 0x1F, 0x20, 0x21,
            0x25 };

        private byte[] NormalData = new byte[] {0x6C, 0xA2, 0x48, 0xB4, 0x05, 0x00,0xFF,
            0x30, 0x30, 0x30, 0x00,  0x04, 0x81, 0x02,  0xB8, 0x60, 0xA0,
            0x48, 0x30, 0x8F, 0x82,  0x02, 0x46, 0x00,  0x00, 0x00, 0x89,
            0x77, 0x72, 0x00, 0x00,  0x43, 0x03, 0x01,  0x02, 0x13, 0x45 };

        private byte[] Biquads = new byte[] { 0x50, 0x29, 0x30, 0x2A, 0x2B,
            0x2C, 0x2D, 0x2E, 0x2F, 0x58,  0x59, 0x31, 0x32, 0x33, 0x34,
            0x35, 0x36, 0x5C, 0x5D, 0x5A,  0x5B, 0x5E };

        private byte[] BiquadsData = new byte[] {0x00, 0x00, 0x00, 0x00,
            0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
        };

        private byte[] DRC1 = new byte[] { 0x3A, 0x3B, 0x3C, 0x40, 0x41,
            0x42/*, 0x47*/ };

        private byte[] DRC1Data = new byte[] {
            0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
            0xFD, 0xA2, 0x14, 0x90,
            0x03, 0x84, 0x21, 0x09,
            0x00, 0x08, 0x42, 0x10/*,
            0x00, 0x00, 0x00, 0x00*/
        };

        private byte[] DRC2 = new byte[] { 0x3D, 0x3E, 0x3F, 0x43, 0x44,
            0x45/*, 0x48*/ };

        private byte[] DRC2Data = new byte[] {
            0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
            0xFD, 0xA2, 0x14, 0x90,
            0x03, 0x84, 0x21, 0x09,
            0x00, 0x08, 0x42, 0x10/*,
            0x00, 0x00, 0x00, 0x00*/
        };

        private byte[] DRCs = new byte[] { 0x46 };
        private byte[] DRCsData = new byte[] { 0x00, 0x00, 0x00, 0x00 };

        private byte[] CH1OutputMixer = new byte[] { 0x51 };
        private byte[] CH1OutputMixerData = new byte[] { 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };

        private byte[] CH2OutputMixer = new byte[] { 0x52 };
        private byte[] CH2OutputMixerData = new byte[] { 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };

        private byte[] CH1InputMixer = new byte[] { 0x53 };
        private byte[] CH1InputMixerData = new byte[] { 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00 };

        private byte[] CH2InputMixer = new byte[] { 0x54 };
        private byte[] CH2InputMixerData = new byte[] { 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00 };

        private byte[] CH3InputMixer = new byte[] { 0x55 };
        private byte[] CH3InputMixerData = new byte[] { 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };

        private byte[] PostScale = new byte[] { 0x56 };
        private byte[] PostScaleData = new byte[] { 0x00, 0x80, 0x00, 0x00 };

        private byte[] PreScale = new byte[] { 0x57 };
        private byte[] PreScaleData = new byte[] { 0x00, 0x02, 0x00, 0x00 };

        private byte[] SubOutputMixer = new byte[] { 0x60 };
        private byte[] SubOutputMixerData = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00 };

        private byte[] SubInputMixer = new byte[] { 0x61 };
        private byte[] SubInputMixerData = new byte[] { 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00 };

        private byte[] NoiseGate1 = new byte[] { 0x63 };
        private byte[] NoiseGate1Data = new byte[] { 0x02, 0x03, 0x02, 0x00 };

        private byte[] NoiseGate2 = new byte[] { 0x64 };
        private byte[] NoiseGate2Data = new byte[] { 0x04, 0x62, 0x00, 0x00 };
    }
}